/*
 * REFEventDispatcher.h
 *
 *  Created on: Jun 12, 2013
 *      Author: Lucifer
 */

#ifndef DISPATCHER_H_
#define DISPATCHER_H_

namespace BFX
{

class REFEventReactor;
class REFEventContext;
class REFServiceRegistry;

/**
 * Provides services for managing the events on one or more dispatching thread(s).
 */
class REFEventDispatcher : public REFObject
{
public:
	REFEventDispatcher();
	virtual ~REFEventDispatcher();

	void PostImmediateCompletion(REFEventContext* pContext);

	REFServiceRegistry* GetServiceRegistry() const;

	void WorkStarted();

private:
	REF<REFServiceRegistry>	m_pServiceRegistry;
};

} /* namespace BFX */

#endif /* DISPATCHER_H_ */
